home *** CD-ROM | disk | FTP | other *** search
/ Amiga Tools 2 / Amiga Tools 2.iso / tools / packer / ha0999beta / src / error.c < prev    next >
C/C++ Source or Header  |  1995-03-09  |  3KB  |  89 lines

  1. /***********************************************************************
  2.   This file is part of HA, a general purpose file archiver.
  3.   Copyright (C) 1995 Harri Hirvola
  4.  
  5.   This program is free software; you can redistribute it and/or modify
  6.   it under the terms of the GNU General Public License as published by
  7.   the Free Software Foundation; either version 2 of the License, or
  8.   (at your option) any later version.
  9.  
  10.   This program is distributed in the hope that it will be useful,
  11.   but WITHOUT ANY WARRANTY; without even the implied warranty of
  12.   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  13.   GNU General Public License for more details.
  14.  
  15.   You should have received a copy of the GNU General Public License
  16.   along with this program; if not, write to the Free Software
  17.   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  18. ************************************************************************
  19.     HA error handling
  20. ***********************************************************************/
  21.  
  22. #include <stdlib.h>
  23. #include <stdio.h>
  24. #include <stdarg.h>
  25. #include "ha.h"
  26. #include "error.h"
  27.  
  28. int inerror=0,lasterror=0;
  29.  
  30. char *error_string[]={
  31.     "Error in error handling !!!",            
  32.     "Unknown error",
  33.     "Command %c not implemented",    
  34.     "Could not open archive %s",
  35.     "Out of memory in %s",
  36.     "%s is not a HA archive",
  37.     "Write error on %s",
  38.     "Read error on %s",
  39.     "Got signal %d",
  40.     "No files found",
  41.     "Could not remove %s",
  42.     "Invalid switch %c",
  43.     "Archive needs newer version of HA",
  44.     "Archive made with unsupported version",
  45.     "Unknown compression method %d",
  46.     "Lseek error in %s",
  47.     "Could not open file %s",
  48.     "Could not make directory %s",
  49.     "CRC error",
  50.     "Write error",
  51.     "Could not get file status for %s",
  52.     "Could not open directory %s",
  53.     "Archive corrupted !",
  54.     "Wrong size for %s",
  55.     "Don't know how to handle %s",
  56.     "Could not read symlink %s",
  57.     "Could not link %s to %s",
  58.     "Could not make fifo %s",
  59. };
  60.  
  61.  
  62. void error(int fatal, int number, ...) {
  63.     
  64.     va_list argptr;
  65.     
  66.     fflush(stdout);
  67.     if (inerror) {
  68.     fprintf(stderr,"\n%s: ",myname);
  69.     fprintf(stderr,error_string[0]);
  70.     fprintf(stderr,"\n");
  71.     fflush(stderr);    
  72.     exit(inerror);
  73.     }
  74.     inerror=number;
  75.     fprintf(stderr,"\n%s: ",myname);
  76.     va_start(argptr,number);
  77.     vfprintf(stderr,error_string[number],argptr);
  78.     fprintf(stderr,"\n");
  79.     fflush(stderr);
  80.     if (!fatal) {
  81.     lasterror=inerror;
  82.     inerror=0;
  83.     return;
  84.     }
  85.     cu_do(NULL);
  86.     exit(number);
  87. }
  88.  
  89.